﻿using EU.Core.Common;
using Microsoft.Extensions.Hosting;

namespace EU.Core.Tasks;

public class Job2TimedService : IHostedService, IDisposable
{
    private Timer _timer;

    // 这里可以注入
    public Job2TimedService()
    {
    }

    public Task StartAsync(CancellationToken cancellationToken)
    {
        Console.WriteLine("Job 2 is starting.");

        _timer = new Timer(DoWork, null, TimeSpan.Zero,
            TimeSpan.FromSeconds(60 * 60 * 2));//两个小时

        return Task.CompletedTask;
    }

    private void DoWork(object state)
    {
        ConsoleHelper.WriteWarningLine($"Job 2： {DateTime.Now}");
    }

    public Task StopAsync(CancellationToken cancellationToken)
    {
        Console.WriteLine("Job 2 is stopping.");

        _timer?.Change(Timeout.Infinite, 0);

        return Task.CompletedTask;
    }

    public void Dispose()
    {
        _timer?.Dispose();
    }
}
